<?php
//------------------------------------------------------------ Contraintes d'accès de la page

	// on vérifie que cette page est appelée à partir de l'index et que l'utilisateur a le droit d'édition
	if(isset($_SESSION) && ($GLOBALS['USER']['level'] >= 4 || $GLOBALS['USER']['admin'])){

		// l'identifiant de la donnée à supprimer est indiqué par un entier
		if(isset($_GET['id']) && numericInt($_GET['id'])){
		
			$nb_documents = valueExists((int)$_GET['id'], "CODEREFERENCE", "reference", $connexion);
			
			if($nb_documents == 1){ // le document à éditer existe et son identifiant est unique
	
?>
<?php
//------------------------------------------------------------ Valeur des champs avant saisie

	// récupération des informations du document
	$query_recuperation_reference = "SELECT TITREREFERENCE, CODETYPEREFERENCE, CODETHEMATIQUE, ANNEEPARUTION, AUTEUR, ADRESSEINTERNET, REFERENCEJARDIN ";
	$query_recuperation_reference .= "FROM reference ";
	$query_recuperation_reference .= "WHERE CODEREFERENCE = ".$_GET['id']." ";
	
	$result_recuperation_reference = mysql_query($query_recuperation_reference, $connexion) or logError("RECUPERATION REFERENCE-".$query_recuperation_reference."-".mysql_error());
	
	$tab_recuperation_reference = mysql_fetch_row($result_recuperation_reference);

	$dv_titre = $tab_recuperation_reference[0]; // valeur du champ titre (edt_nom)
	$dv_type = $tab_recuperation_reference[1]; // valeur du champ type (edt_type)
	$dv_theme = $tab_recuperation_reference[2]; // valeur du champ thème (edt_theme)
	$dv_annee = $tab_recuperation_reference[3]; // valeur du champ année (edt_annee)
	$dv_auteur = $tab_recuperation_reference[4]; // valeur du champ auteur (edt_auteur)
	$dv_url = $tab_recuperation_reference[5]; // valeur du champ url (edt_url)
	$dv_refJardin = $tab_recuperation_reference[6]; // valeur du champ url (edt_url)
	
	$titreOrigine = $tab_recuperation_reference[0];
	
	mysql_free_result($result_recuperation_reference);
	
	// valeurs possibles des champs edt_type
	$query_recuperation_types_reference = "SELECT CODETYPEREFERENCE AS id, NOMTYPEREFERENCE AS nom FROM type_reference ORDER BY nom";
	
	$result_recuperation_types_reference =  mysql_query($query_recuperation_types_reference, $connexion) or logError("RECUPERATION TYPES REFERENCE-".$query_recuperation_types_reference."-".mysql_error());

	$selectTypesReference = array(); // on créé un tableau qui contient la liste des classifications ainsi que les informations de chacune
	$nb_typesReference = 0;
	while($tab_recuperation_types_reference = mysql_fetch_assoc($result_recuperation_types_reference)){
		$selectTypesReference[$nb_typesReference] = $tab_recuperation_types_reference;
		$nb_typesReference++;
	}
	
	mysql_free_result($result_recuperation_types_reference);
	
	// valeurs possibles des champs edt_theme
	$query_recuperation_themes = "SELECT CODETHEMATIQUE AS id, NOMTHEMATIQUE AS nom FROM thematique ORDER BY nom";
	
	$result_recuperation_themes =  mysql_query($query_recuperation_themes, $connexion) or logError("RECUPERATION THEMES-".$query_recuperation_themes."-".mysql_error());

	$selectThemes = array(); // on créé un tableau qui contient la liste des classifications ainsi que les informations de chacune
	$nb_themes = 0;
	while($tab_recuperation_themes = mysql_fetch_assoc($result_recuperation_themes)){
		$selectThemes[$nb_themes] = $tab_recuperation_themes;
		$nb_themes++;
	}
	
	mysql_free_result($result_recuperation_themes);
	
?>
<?php
//------------------------------------------------------------ Traitements si le formulaire a été envoyé

/********************************* Règles :

	- le titre de la référence ne peut pas être vides
	- le type et le theme doivent être enregistrés dans la BDD

*****************************************/

	$statut = array(); // indique le statut du traitement du formulaire (echec ou succes) - tableau contenant les messages à afficher
	$erreur = false; // indique si une erreur a été rencontrée lors du traitement

	trimTabByKey($_POST, "edt_"); // appel à la fonction trimTabByKey() définie dans fonctions.php
	
	//---------------------------------- Contrôle des données ----------------------------------
	
	if(isset($_POST['form_sent'])){ // si le formulaire est envoyé
	
		// Contrôle des données du titre du document
		if(isset($_POST['edt_titre'])){
			if(emptyString($_POST['edt_titre'])){
				$statut[] = "Le titre du document ne peut être effacé";
				$erreur = true;
			}else{
				if(!strcmpCollation($_POST['edt_titre'], $titreOrigine)){ // Si le nom a été modifié
					if(valueExists($_POST['edt_titre'], "TITREREFERENCE", "reference", $connexion) > 0){
						$statut[] = "Ce document existe déjà";
						$erreur = true;
					}else{
						$dv_titre = $_POST['edt_titre'];
					}
				}else{
					$dv_titre = $_POST['edt_titre'];
				}
			}
		}else{
			$statut[] = "Aucun titre du document indiqué";
			$erreur = true;
		}
		
		// Contrôle des données du type du document
		if(isset($_POST['edt_type']) && is_string($_POST['edt_type'])){
			if(!numericInt($_POST['edt_type'])){
				$statut[] = "Format du type du document incorrect";
				$erreur = true;
			}else{
				if(valueExists((int)$_POST['edt_type'], "CODETYPEREFERENCE", "type_reference", $connexion) == 1){
					$dv_type = $_POST['edt_type'];
				}else{
					$statut[] = "Le type de document n'existe pas";
					$erreur = true;
				}
			}
		}else{
			$statut[] = "Aucun type de document indiqué";
			$erreur = true;
		}
		
		// Contrôle des données du thème du document
		if(isset($_POST['edt_theme']) && is_string($_POST['edt_theme'])){
			if(!numericInt($_POST['edt_theme'])){
				$statut[] = "Format du thème du document incorrect";
				$erreur = true;
			}else{
				if(valueExists((int)$_POST['edt_theme'], "CODETHEMATIQUE", "thematique", $connexion) == 1){
					$dv_theme = $_POST['edt_theme'];
				}else{
					$statut[] = "Le thème du document n'existe pas";
					$erreur = true;
				}
			}
		}else{
			$statut[] = "Aucun thème de document indiqué";
			$erreur = true;
		}
		
		// Contrôle des données de l'année de parution
		if(isset($_POST['edt_annee'])){
			if(!emptyString($_POST['edt_annee'])){
				if(!numericInt($_POST['edt_annee'])){
					$statut[] = "Format de l'année de parution incorrect";
					$erreur = true;
				}else{
					if($_POST['edt_annee'] > date("Y")){
						$statut[] = "Année de parution incorrecte";
						$erreur = true;
					}else{
						$dv_annee = $_POST['edt_annee'];
					}
				}
			}else{
				$dv_annee = $_POST['edt_annee'];
			}
		}else{
			$statut[] = "Aucune année de parution ndiquée";
			$erreur = true;
		}
		
		// Contrôle des données de l'auteur
		if(isset($_POST['edt_auteur'])){
			$dv_auteur = $_POST['edt_auteur'];
		}else{
			$statut[] = "Aucun auteur indiqué";
			$erreur = true;
		}
		
		// Contrôle des données de l'URL
		if(isset($_POST['edt_url']) && is_string($_POST['edt_url'])){
			if(!emptyString($_POST['edt_url'])){
				if(!isUrlFormat($_POST['edt_url'])){
					$statut[] = "Format de l'adresse internet incorrect";
					$erreur = true;
				}else{
					$dv_url = $_POST['edt_url'];
				}
			}else{
				$dv_url = $_POST['edt_url'];
			}
		}else{
			$statut[] = "Aucune adresse internet indiquée";
			$erreur = true;
		}
		
		// Contrôle des données de la référence au jardin botanique
		if(isset($_POST['edt_refJardin'])){
			$dv_refJardin = $_POST['edt_refJardin'];
		}else{
			$statut[] = "Aucune référence au jardin botanique indiqué";
			$erreur = true;
		}
		
		//---------------------------------- Modification de la référence ----------------------------------
	
		if(!$erreur){ // aucune erreur n'a été rencontrée jusqu'ici
		
			$query_modification_reference = "UPDATE reference ";
			$query_modification_reference .= "SET TITREREFERENCE = ".mysqlString($_POST['edt_titre'])." , CODETYPEREFERENCE = ".$_POST['edt_type']." , CODETHEMATIQUE = ".$_POST['edt_theme']." ";
			if(emptyString($_POST['edt_annee'])){
				$query_modification_reference .= ", ANNEEPARUTION = NULL ";
			}else{
				$query_modification_reference .= ", ANNEEPARUTION = ".$_POST['edt_annee']." ";
			}
			$query_modification_reference .= ", AUTEUR = ".mysqlString($_POST['edt_auteur'])." , ADRESSEINTERNET = ".mysqlString($_POST['edt_url'])." , REFERENCEJARDIN = ".mysqlString($_POST['edt_refJardin'])." ";
			$query_modification_reference .= "WHERE CODEREFERENCE = ".$_GET['id']." ";
			
			$result_modification_reference = mysql_query($query_modification_reference, $connexion) or logError("MODIFICATION REFERENCE-".$query_modification_reference."-".mysql_error());
		
			if($result_modification_reference === true){
				$statut[] = "Les informations du document on été modifiées";
				logAction("REFERENCE (id: ".$_GET['id'].") MODIFIEE par ".capitalise($GLOBALS['USER']['prenom'])." ".mb_strtoupper($GLOBALS['USER']['nom'])." (".$GLOBALS['USER']['login'].")");
			}else{
				$statut[] = "Erreur critique lors de la modification du document";
				$erreur = true;
			}
		
		}
		
	}
?>
<?php
//------------------------------------------------------------ Affichage du statut si le formulaire a été envoyé

	if(isset($_POST['form_sent'])){ // si le formulaire est envoyé
		
		if($erreur){
			afficherStatut($statut, 3); // appel à la fonction afficherStatut() définie dans fonctions.php
		}else{
			afficherStatut($statut, 1); // appel à la fonction afficherStatut() définie dans fonctions.php
		}
	
	}

?>
<?php
	boutonRetour("index.php?p=gestion/reference_gere"); // // appel à la fonction boutonRetour() définie dans fonctions.php
?>
<form method="post" action="index.php?p=gestion/reference_edite&amp;id=<?php echo $_GET['id']; ?>">
	<table class="formulaire" style="margin-left: auto; margin-right: auto;">
		<tr>
			<th class="titre" colspan="2">Modification des informations d'un document</th>
		</tr>
		<tr>
			<td style="width: 120px" class="etiquette">Titre * :</td>
			<td style="width: 275px" class="champ"><input type="text" name="edt_titre" size="25" value="<?php echo htmlentities($dv_titre, ENT_COMPAT, "UTF-8"); ?>" /></td>
		</tr>
		<tr>
			<td class="etiquette">Type * :</td>
			<td class="champ">
				<select name="edt_type">
					<?php
						if($nb_typesReference > 0){
							foreach($selectTypesReference as $type){
								if($type['id'] == $dv_type){
									echo "<option value=\"".$type['id']."\" selected=\"selected\">".htmlentities(mb_strtolower($type['nom']), ENT_NOQUOTES, "UTF-8")."</option>";
								}else{
									echo "<option value=\"".$type['id']."\">".htmlentities(mb_strtolower($type['nom']), ENT_NOQUOTES, "UTF-8")."</option>";
								}
							}
							unset($type);
						}else{
							echo "<option disabled=\"disabled\">Aucun type de doc. enregistré</option>";
						}
					?>
				</select><br />
				<input type="button" value="Ajouter un type de document" onclick="popup('popup.php?p=gestion/typereference_ajoute_popup&amp;maj=edt_type&amp;sel=1', 400, 300);" />
			</td>
		</tr>
		<tr>
			<td class="etiquette">Théme * :</td>
			<td class="champ">
				<select name="edt_theme">
					<?php
						if($nb_themes > 0){
							foreach($selectThemes as $theme){
								if($theme['id'] == $dv_theme){
									echo "<option value=\"".$theme['id']."\" selected=\"selected\">".htmlentities(mb_strtolower($theme['nom']), ENT_NOQUOTES, "UTF-8")."</option>";
								}else{
									echo "<option value=\"".$theme['id']."\">".htmlentities(mb_strtolower($theme['nom']), ENT_NOQUOTES, "UTF-8")."</option>";
								}
							}
							unset($theme);
						}else{
							echo "<option disabled=\"disabled\">Aucun thème</option>";
						}
					?>
				</select><br />
				<input type="button" value="Ajouter un thème" onclick="popup('popup.php?p=gestion/thematique_ajoute_popup&amp;maj=edt_theme&amp;sel=1', 400, 300);" />
			</td>
		</tr>
		<tr>
			<td class="etiquette">Année parution :</td>
			<td class="champ"><input type="text" name="edt_annee" size="5" value="<?php echo htmlentities($dv_annee, ENT_COMPAT, "UTF-8"); ?>" /></td>
		</tr>
		<tr>
			<td class="etiquette">Auteur :</td>
			<td class="champ"><input type="text" name="edt_auteur" size="20" value="<?php echo htmlentities($dv_auteur, ENT_COMPAT, "UTF-8"); ?>" /></td>
		</tr>
		<tr>
			<td class="etiquette">URL :</td>
			<td class="champ"><input type="text" name="edt_url" size="40" value="<?php echo htmlentities($dv_url, ENT_COMPAT, "UTF-8"); ?>" /></td>
		</tr>
		<tr>
			<td class="etiquette">Ref. Jardin :</td>
			<td class="champ"><input type="text" name="edt_refJardin" size="10" value="<?php echo htmlentities($dv_refJardin, ENT_COMPAT, "UTF-8"); ?>" /></td>
		</tr>
		<tr>
			<td class="envoi" colspan="2"><input type="submit" value="Modifier" /><input type="hidden" name="form_sent" value="1" /></td>
		</tr>
		<tr>
			<td class="legende" colspan="2">* = champs obligatoires</td>
		</tr>
	</table>
</form>
<div class="information">
	<div class="titre">Informations</div>
	<h4>Référence au jardin :</h4>
	<p>Si ce document est disponible au jardin botanique de Besançon, indiquez sa référence si connue ou un moyen de l'identifier (emplacement, etc...). Sinon, laissez le champ vide.</p>
</div>
<?php
//------------------------------------------------------------ Accès refusé à la page

			}else{
				afficherStatut("Le document à éditer n'existe pas", 3); // appel à la fonction afficherStatut() définie dans fonctions.php
			}

		}else{
			afficherStatut("Le document à éditer n'est pas ou mal indiquée", 3); // appel à la fonction afficherStatut() définie dans fonctions.php
		}

	}else{
		if(isset($_SESSION)){
			if(!isset($_SESSION['user_id'])){ // si l'utilisateur n'est pas connecté
				include("pages/connexion.php");
			}else{ // si l'utilisateur est connecté et qu'il n'a pas accès à la page, c'est qu'il n'a pas le droit d'utilisation nécessaire
				include("pages/401.htm");
			}
		}
	}

?>